每天一个技术点

(2023.7.21)软件加密与解密-番外2-荒野行动人物天线[XDbg]

本文作者:XDbgPYG(小吧唧)
发布时间:2023年7月21日
内容概要:讲一下网易的一个fps游戏人物天线的思路

思路

所谓的人物天线只是更改了人物骨骼点的坐标。
人物骨骼点分为静态的 base 和动态的。

我的做法就是通过 GameGuardian 搜索出动态骨骼点再追踪出静态骨骼点。

似乎得休更一段时间,日后回来补个视频教程好了。

思路:

  1. 移动人物坐标(把人物xyz过滤掉
  2. 晃动人物视角(把人物摄像机过滤掉
  3. 比如说蹲下,趴下,站立,左右摆头(把动态或静态骨骼点留下来
  4. 最终,我要找的骨骼点就是位于脚的位置
  5. 我在测试的时候,找到了人物动态的脚骨骼点。通过内存布局的相关知识(脚动态骨骼点与人物 base 骨骼点很近)和 GameGuardian 提供的一键修改的功能成功找到了静态骨骼点。
  6. 提取静态骨骼点特征码,由于我找的非常好,所以数值可以直接拿来用。

如下是修改荒野行动男女人物天线所需要的静态骨骼点的代码。现在应该还能用。

代码

function Main0()
SN = gg.choice({
	 "人物天线",
}, nil, "one-day-one-point")
if SN==1 then
	 Main1()
end
FX1=0
end

function Main1()
SN = gg.choice({
	 "人物天线",
	 "人物天线2",
}, nil, "这是一个公告")
if SN==1 then
	 HS5()
end
if SN==2 then
	 HS6()
end
FX1=0
end

function HS5()
	 gg.clearResults()
	 gg.setRanges(4)
	 gg.searchNumber("0.1168569997", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1)
	 gg.searchNumber("0.1168569997", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1)
	 gg.getResults(100)
	 gg.editAll("150", gg.TYPE_FLOAT)
	 gg.toast("ok")
	 gg.clearResults()
end

function HS6()
	 gg.clearResults()
	 gg.setRanges(4)
	 gg.searchNumber("0.10623399913", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1)
	 gg.searchNumber("0.10623399913", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1)
	 gg.getResults(100)
	 gg.editAll("150", gg.TYPE_FLOAT)
	 gg.toast("ok2")
	 gg.clearResults()
end



while true do
if gg.isVisible(true) then
    FX1 = nil
    gg.setVisible(false)
  end
  if FX1 == nil then
    Main0()
  end
end

效果

效果图如下: